#ifndef __WIZ_UTILS_TICKER_HPP__SHANHAOBO_19800429__
#define __WIZ_UTILS_TICKER_HPP__SHANHAOBO_19800429__

#include "./WizUtilsTickerObject.hpp"
#include "./WizUtilsTickerObjectComposite.hpp"
#include "./WizUtilsTickerObjectTimeScale.hpp"

namespace Wiz
{
    namespace Ticker
    {
        template<class TimeT>
        class WIZ_EXPORT Type
        {
            typedef Type                                                        tThis;
            typedef TimeT                                                       tTime;
            typedef ::Wiz::Signal::Safe::Type<::Wiz::Void::Type(const tTime&)>  tSignal;
            typedef ::Wiz::Ticker::Object::Type<tTime>                          tObject;
        public:
            Type();
            virtual ~Type();
        public:
            ::Wiz::Void::Type Register(const tObject* ObjPtr);
            ::Wiz::Void::Type Unregister(const tObject* ObjPtr);
        public:
            virtual ::Wiz::Void::Type Tick(const tTime& DeltaTime);
        private:
            tSignal                      m_SignalObjs;
        };
    } /// end of namespace Ticker
} /// end of namespace Wiz


#endif /*__WIZ_UTILS_TICKER_HPP__SHANHAOBO_19800429__*/
